package com.dimples.dd.system.mapper;

import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.mybatis.core.query.LambdaQueryWrapperX;
import com.dimples.dd.system.model.entity.SystemPostDO;
import com.dimples.dd.system.model.query.PostPageQuery;
import org.apache.ibatis.annotations.Mapper;

import java.util.Collection;
import java.util.List;

@Mapper
public interface SystemPostMapper extends com.dimples.dd.mybatis.core.mapper.BaseMapperX<SystemPostDO> {

    /**
     * 分页查询岗位信息
     *
     * @param queryParams 查询参数
     * @return 分页结果
     */
    default PageResult<SystemPostDO> selectPage(PostPageQuery queryParams) {
        return selectPage(queryParams, new LambdaQueryWrapperX<SystemPostDO>()
                .likeIfPresent(SystemPostDO::getCode, queryParams.getCode())
                .likeIfPresent(SystemPostDO::getName, queryParams.getName())
                .eqIfPresent(SystemPostDO::getStatus, queryParams.getStatus())
                .orderByAsc(SystemPostDO::getSort));
    }

    /**
     * 根据ID查询岗位信息
     *
     * @param ids      岗位ID集合
     * @param statuses 状态集合
     * @return 岗位信息集合
     */
    default List<SystemPostDO> selectList(Collection<Long> ids, Collection<Integer> statuses) {
        return selectList(new LambdaQueryWrapperX<SystemPostDO>()
                .inIfPresent(SystemPostDO::getId, ids)
                .inIfPresent(SystemPostDO::getStatus, statuses)
                .select(SystemPostDO::getId, SystemPostDO::getName)
        );
    }

    default SystemPostDO selectByName(String name) {
        return selectOne(SystemPostDO::getName, name);
    }

    default SystemPostDO selectByCode(String code) {
        return selectOne(SystemPostDO::getCode, code);
    }
}